package com.jakeprim.proxy.caller;

import com.jakeprim.proxy.GameFactory;
import com.jakeprim.proxy.impl.JakeProxy;
import com.jakeprim.proxy.impl.JakeProxy2;
import com.jakeprim.proxy.real.PS4Factory;

public class TuHao {
    public static void main(String[] args) {
        //想要去购买ps4
        PS4Factory factory = new PS4Factory();
        //找代理人 我要买ps4
        JakeProxy jakeProxy = new JakeProxy(factory);
        //买回来了
        jakeProxy.make();

        //在比如 土豪现在想买图书了 那么代理人就需要继承bookfactory 以后代理人扩展业务 就需要实现不同的接口

        //动态代理 不管是增加接口还是新的代理 不会影响代理人的代码业务
        JakeProxy2 jakeProxy2 = new JakeProxy2();
        jakeProxy2.setTarget(new PS4Factory());
        GameFactory proxyGame = (GameFactory) jakeProxy2.getProxy();//获得一个代理
        proxyGame.make();

        //当然上述的代码 非常恶心的 如果要代理100个对象 那么就要写一百次 非常麻烦 那么如何解决这个问题呢
        //可以参考Spring中的源码设计 后期在进行讲解
    }
}
